/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.uniceub.fsw.produtividade.facade;
import br.uniceub.fsw.arquitetura.persistencia.transacao.Transacao;
import br.uniceub.fsw.produtividade.dao.IndiceProdutividadeDAO;
import br.uniceub.fsw.produtividade.vo.IndiceProdutividadeVO;
import br.uniceub.fsw.util.TabelaHtml;
import java.util.ArrayList;
/*import java.util.Date;*/
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Facade da entidade IndiceProdutividade.
 * 
 * @author Fernando Tenorio
 */
public class IndiceProdutividadeFacade {
    /**
     * Mensagem de retorno do sistema.
     */
    private String message;

    /**
     * Value object do Indice de Produtividade .
     */
    private IndiceProdutividadeVO indiceProdutividadeVo;
    
    /**
     * Objeto de acesso aos dados de Indice de Produtividade .
     */
    private IndiceProdutividadeDAO indiceProdutividadeDao;
    
    /**
     * Construtor da classe.
     */
    public IndiceProdutividadeFacade() {
        this.indiceProdutividadeDao = new IndiceProdutividadeDAO();
        }
    
    /**
     * Getter da mensagem de retorno.
     * 
     * @return Mensagem de retorno.
     */
    public String getMessage() {
        String retorno = null;
        if(this.message == null || this.message.equals("")) {
            retorno = "&nbsp";
        } else {
            retorno = this.message;
        }
        return retorno;
    }

    /**
     * Setter da mensagem de retorno.
     * 
     * @param message Mensagem de retorno.
     */
    public void setMessage(String message) {
        this.message = message;
    }
    
    /**
     * Responsável por executar a operação selecionada pelo Indice de Produtividade .
     * 
     * @param req Requisição web do tipo HTTP.
     * @param resp Resposta da requisição HTTP.
     */
    public void operacao(HttpServletRequest req, HttpServletResponse resp) {
        String oper = req.getParameter("operacao");

        if(oper != null)
        {
            if (oper.equals("calcular")) {
                this.calcular(req, resp);
            }          
        }
    }
    /**
     * Retorna o IndiceProdutividade.
     * 
     * @return Objeto IndiceProdutividade.
     */
    public IndiceProdutividadeVO getIndiceProdutividade() {
        return this.indiceProdutividadeVo;
    }

    /**
     * Calcular o indiceProdutividade.
     * 
     * @param req Requisição web do tipo HTTP.
     * @param resp Resposta da requisição HTTP.
     */
    public void calcular(HttpServletRequest req, HttpServletResponse resp) {
      /**  String cadastro = req.getParameter("cadastro");
        String referencia = req.getParameter("referencia");
        Integer cdTecnologia = Integer.parseInt(req.getParameter("cdTecnologia"));

        indiceProdutividadeVo = new IndiceProdutividadeVO();
        
        indiceProdutividadeVo.setCadastro(cadastro); 
        indiceProdutividadeVo.setCodigoPerfil(cdTecnologia);
        indiceProdutividadeVo.setCodigoTalento(cdTecnologia);
        indiceProdutividadeVo.setIndice(cdTecnologia);
        indiceProdutividadeVo.setReferencia(referencia);*/
       
        
        String mensagem = null;
        
             
        try {
            Transacao.iniciar();
            
            indiceProdutividadeDao.inserir(indiceProdutividadeVo);
            
            Transacao.efetivar();

            mensagem = "Indice de Produtividade  incluído com sucesso.";
            indiceProdutividadeVo = null;
        } catch (Exception ex) {
            Transacao.desfazer();
            
            mensagem = "Problema no calculo do Indice de Produtividade : " + ex.getMessage();
        }

        this.message = mensagem;
    }

    /**
     * Alterar um indiceProdutividade.
     * 
     * @param req Requisição web do tipo HTTP.
     * @param resp Resposta da requisição HTTP.
     */
    
    /**
     * Transforma os campos de um VO em uma lista de Strings
     * 
     * @return lista de strings com os valores em ordem
     */
    public List<String> converterVoParaString(IndiceProdutividadeVO indiceProdutividadeVo) {
        List<String> valores = new ArrayList<String>();
        
    /** valores.add(indiceProdutividadeVo.getCadastro().toString());
        valores.add(indiceProdutividadeVo.getCodigoPerfil().toString());
        valores.add(indiceProdutividadeVo.getCodigoTalento().toString());
        valores.add(IndiceProdutividadeVO.getIndice());
        valores.add(indiceProdutividadeVo.getReferencia().toString());*/
        
        return valores;
    }
}
